/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.webhomesites.locacao.view;

import br.com.webhomesites.configuracao.utils.ConfiguracaoInstancias;
import br.com.webhomesites.locacao.contracts.ILocacaoView;
import br.com.webhomesites.locacao.model.ItensLocacaoTableModel;
import br.com.webhomesites.locacao.model.LocacaoBO;
import br.com.webhomesites.padrao.model.ClienteModel;
import br.com.webhomesites.padrao.model.ProdutoModel;
import br.com.webhomesites.padrao.utils.DigitosPermitidos;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JTextField;
import javax.swing.table.TableColumnModel;

/**
 *
 * @author Webhome
 */
public class LocacaoView extends javax.swing.JInternalFrame implements ILocacaoView {

    /**
     * Creates new form LocacaoView
     */
    public LocacaoView() {
        initComponents();
        txtLocacaoDataPrevLocacao.setDocument(new DigitosPermitidos());
        comboLocacaoDescricaoProduto.removeAllItems();
        comboLocacaoNomeCliente.removeAllItems();
        comboLocacaoTabelaLocacao.removeAllItems();
        
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        painelLocacao = new javax.swing.JPanel();
        btnCancelarLocacao = new javax.swing.JButton();
        txtLocacaoCodigoLocacao = new javax.swing.JTextField();
        labelLocacaoCodigo = new javax.swing.JLabel();
        comboLocacaoNomeCliente = new javax.swing.JComboBox();
        labelLocacaoNomeCliente = new javax.swing.JLabel();
        labelLocacaoDataLocacao = new javax.swing.JLabel();
        txtLocacaoDiasLocacao = new javax.swing.JTextField();
        labelLocacaoDiasLocacao = new javax.swing.JLabel();
        comboLocacaoTabelaLocacao = new javax.swing.JComboBox();
        labelLocacaoTabela = new javax.swing.JLabel();
        labelLocacaoDataPrevLocacao = new javax.swing.JLabel();
        txtLocacaoDataPrevLocacao = new javax.swing.JTextField();
        btnSalvarLocacao = new javax.swing.JButton();
        txtLocacaoDataLocacao = new javax.swing.JTextField();
        btnNovoLocacao = new javax.swing.JButton();
        painelIncluirProduto = new javax.swing.JPanel();
        txtLocacaoCodigoProduto = new javax.swing.JTextField();
        labelLocacaoSerieProduto = new javax.swing.JLabel();
        txtLocacaoSerieProduto = new javax.swing.JTextField();
        labelLocacaoCodProduto = new javax.swing.JLabel();
        comboLocacaoDescricaoProduto = new javax.swing.JComboBox();
        labelLocacaoDescricaoProduto = new javax.swing.JLabel();
        txtLocacaoValorProduto = new javax.swing.JTextField();
        labelLocacaoValorProduto = new javax.swing.JLabel();
        btnNovoItem = new javax.swing.JButton();
        btnSalvarItem = new javax.swing.JButton();
        btnCancelarItem = new javax.swing.JButton();
        btnRemoverItem = new javax.swing.JButton();
        txtLocacaoValorTotal = new javax.swing.JTextField();
        labelLocacaoValorTotal = new javax.swing.JLabel();
        labelLocacaoValorItem = new javax.swing.JLabel();
        txtLocacaoValorItem = new javax.swing.JTextField();
        btnEmitirContrato = new javax.swing.JButton();
        btnAprovarLocacao = new javax.swing.JButton();
        btnPagamento = new javax.swing.JButton();
        btnFinalizar = new javax.swing.JButton();
        btnAguardando = new javax.swing.JButton();
        btnReprovarLocacao = new javax.swing.JButton();
        btnEmitirRecibo = new javax.swing.JButton();
        scrollTabelaItens = new javax.swing.JScrollPane();
        tabelaLocacaoItensLocacao = new javax.swing.JTable();

        setClosable(true);
        setIconifiable(true);

        painelLocacao.setBorder(javax.swing.BorderFactory.createTitledBorder("Locação"));

        btnCancelarLocacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/block-icon.png"))); // NOI18N
        btnCancelarLocacao.setMnemonic('c');

        labelLocacaoCodigo.setText("Cód.Locação");

        comboLocacaoNomeCliente.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione o nome" }));

        labelLocacaoNomeCliente.setText("Nome Cliente");

        labelLocacaoDataLocacao.setText("Data Locação");

        labelLocacaoDiasLocacao.setText("Dias Locação");

        labelLocacaoTabela.setText("Tabela");

        labelLocacaoDataPrevLocacao.setText("Data Prev. Devol");

        btnSalvarLocacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/save-icon.png"))); // NOI18N
        btnSalvarLocacao.setMnemonic('s');

        btnNovoLocacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/document-icon.png"))); // NOI18N
        btnNovoLocacao.setMnemonic('n');

        javax.swing.GroupLayout painelLocacaoLayout = new javax.swing.GroupLayout(painelLocacao);
        painelLocacao.setLayout(painelLocacaoLayout);
        painelLocacaoLayout.setHorizontalGroup(
            painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelLocacaoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(btnNovoLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnSalvarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnCancelarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(labelLocacaoCodigo, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE)
                            .addComponent(txtLocacaoCodigoLocacao)
                            .addComponent(comboLocacaoTabelaLocacao, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(labelLocacaoTabela, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(comboLocacaoNomeCliente, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(painelLocacaoLayout.createSequentialGroup()
                                .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(labelLocacaoDataLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(txtLocacaoDataLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                            .addComponent(labelLocacaoDiasLocacao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addComponent(txtLocacaoDiasLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                            .addComponent(labelLocacaoDataPrevLocacao, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addComponent(txtLocacaoDataPrevLocacao, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                    .addComponent(labelLocacaoNomeCliente))
                                .addGap(0, 0, Short.MAX_VALUE)))))
                .addContainerGap())
        );
        painelLocacaoLayout.setVerticalGroup(
            painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelLocacaoLayout.createSequentialGroup()
                .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(labelLocacaoCodigo)
                            .addComponent(labelLocacaoNomeCliente))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtLocacaoCodigoLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(labelLocacaoTabela)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(comboLocacaoTabelaLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                        .addComponent(comboLocacaoNomeCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(labelLocacaoDataLocacao)
                            .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(labelLocacaoDiasLocacao)
                                    .addGroup(painelLocacaoLayout.createSequentialGroup()
                                        .addGap(20, 20, 20)
                                        .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(txtLocacaoDiasLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(txtLocacaoDataLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                                .addGroup(painelLocacaoLayout.createSequentialGroup()
                                    .addComponent(labelLocacaoDataPrevLocacao)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(txtLocacaoDataPrevLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(painelLocacaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnCancelarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnSalvarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnNovoLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        painelIncluirProduto.setBorder(javax.swing.BorderFactory.createTitledBorder("Incluir Produto"));

        labelLocacaoSerieProduto.setText("Série Produto");

        labelLocacaoCodProduto.setText("Cód. Prod.");

        comboLocacaoDescricaoProduto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione o produto" }));

        labelLocacaoDescricaoProduto.setText("Descrição Produto");

        labelLocacaoValorProduto.setText("Valor Produto");

        btnNovoItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/document-icon.png"))); // NOI18N
        btnNovoItem.setMnemonic('n');

        btnSalvarItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/save-icon.png"))); // NOI18N
        btnSalvarItem.setMnemonic('s');

        btnCancelarItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/block-icon.png"))); // NOI18N
        btnCancelarItem.setMnemonic('c');

        btnRemoverItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/delete-icon.png"))); // NOI18N
        btnRemoverItem.setMnemonic('x');

        labelLocacaoValorTotal.setText("Valor Total");

        labelLocacaoValorItem.setText("Valor Item");

        javax.swing.GroupLayout painelIncluirProdutoLayout = new javax.swing.GroupLayout(painelIncluirProduto);
        painelIncluirProduto.setLayout(painelIncluirProdutoLayout);
        painelIncluirProdutoLayout.setHorizontalGroup(
            painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(labelLocacaoCodProduto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(txtLocacaoCodigoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(labelLocacaoSerieProduto))
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(labelLocacaoDescricaoProduto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                                .addGap(124, 124, 124)
                                .addComponent(labelLocacaoValorProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelIncluirProdutoLayout.createSequentialGroup()
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
                                .addComponent(comboLocacaoDescricaoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 317, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(txtLocacaoSerieProduto)
                            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                                .addComponent(btnNovoItem, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(btnSalvarItem, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(btnRemoverItem, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnCancelarItem, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                                .addComponent(txtLocacaoValorProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(txtLocacaoValorItem)
                                    .addComponent(labelLocacaoValorItem, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(txtLocacaoValorTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(labelLocacaoValorTotal))))))
                .addContainerGap())
        );
        painelIncluirProdutoLayout.setVerticalGroup(
            painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(labelLocacaoCodProduto)
                            .addComponent(labelLocacaoDescricaoProduto))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtLocacaoCodigoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(comboLocacaoDescricaoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(labelLocacaoSerieProduto)
                            .addComponent(labelLocacaoValorProduto))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtLocacaoSerieProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtLocacaoValorProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnNovoItem, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnSalvarItem, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnCancelarItem, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnRemoverItem, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(painelIncluirProdutoLayout.createSequentialGroup()
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(labelLocacaoValorItem)
                            .addComponent(labelLocacaoValorTotal))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(painelIncluirProdutoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtLocacaoValorItem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtLocacaoValorTotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        btnEmitirContrato.setText("Emitir Contrato");

        btnAprovarLocacao.setText("Aprovar Locação");

        btnPagamento.setText("Pagamento");

        btnFinalizar.setText("Finalizar");

        btnAguardando.setText("Aguardando");

        btnReprovarLocacao.setText("Reprovar Locação");

        btnEmitirRecibo.setText("Emitir Recibo");

        tabelaLocacaoItensLocacao.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        scrollTabelaItens.setViewportView(tabelaLocacaoItensLocacao);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(painelLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnEmitirContrato, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnAprovarLocacao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnPagamento, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnFinalizar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnReprovarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnAguardando, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnEmitirRecibo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(painelIncluirProduto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(scrollTabelaItens, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(painelIncluirProduto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(painelLocacao, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(scrollTabelaItens, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(btnEmitirContrato, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnAprovarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnPagamento, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnFinalizar, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(btnAguardando, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnReprovarLocacao, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnEmitirRecibo, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(0, 39, Short.MAX_VALUE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAguardando;
    private javax.swing.JButton btnAprovarLocacao;
    private javax.swing.JButton btnCancelarItem;
    private javax.swing.JButton btnCancelarLocacao;
    private javax.swing.JButton btnEmitirContrato;
    private javax.swing.JButton btnEmitirRecibo;
    private javax.swing.JButton btnFinalizar;
    private javax.swing.JButton btnNovoItem;
    private javax.swing.JButton btnNovoLocacao;
    private javax.swing.JButton btnPagamento;
    private javax.swing.JButton btnRemoverItem;
    private javax.swing.JButton btnReprovarLocacao;
    private javax.swing.JButton btnSalvarItem;
    private javax.swing.JButton btnSalvarLocacao;
    private javax.swing.JComboBox comboLocacaoDescricaoProduto;
    private javax.swing.JComboBox comboLocacaoNomeCliente;
    private javax.swing.JComboBox comboLocacaoTabelaLocacao;
    private javax.swing.JLabel labelLocacaoCodProduto;
    private javax.swing.JLabel labelLocacaoCodigo;
    private javax.swing.JLabel labelLocacaoDataLocacao;
    private javax.swing.JLabel labelLocacaoDataPrevLocacao;
    private javax.swing.JLabel labelLocacaoDescricaoProduto;
    private javax.swing.JLabel labelLocacaoDiasLocacao;
    private javax.swing.JLabel labelLocacaoNomeCliente;
    private javax.swing.JLabel labelLocacaoSerieProduto;
    private javax.swing.JLabel labelLocacaoTabela;
    private javax.swing.JLabel labelLocacaoValorItem;
    private javax.swing.JLabel labelLocacaoValorProduto;
    private javax.swing.JLabel labelLocacaoValorTotal;
    private javax.swing.JPanel painelIncluirProduto;
    private javax.swing.JPanel painelLocacao;
    private javax.swing.JScrollPane scrollTabelaItens;
    private javax.swing.JTable tabelaLocacaoItensLocacao;
    private javax.swing.JTextField txtLocacaoCodigoLocacao;
    private javax.swing.JTextField txtLocacaoCodigoProduto;
    private javax.swing.JTextField txtLocacaoDataLocacao;
    private javax.swing.JTextField txtLocacaoDataPrevLocacao;
    private javax.swing.JTextField txtLocacaoDiasLocacao;
    private javax.swing.JTextField txtLocacaoSerieProduto;
    private javax.swing.JTextField txtLocacaoValorItem;
    private javax.swing.JTextField txtLocacaoValorProduto;
    private javax.swing.JTextField txtLocacaoValorTotal;
    // End of variables declaration//GEN-END:variables

    @Override
    public void setCodigoLocacao(int codigoLocacao) {
        txtLocacaoCodigoLocacao.setText(Integer.toString(codigoLocacao));
    }

    @Override
    public int getCodigoLocacao() {
        return Integer.parseInt(txtLocacaoCodigoLocacao.getText());
    }

    @Override
    public void setCodigoCliente(int codigoCliente) {
        //txtLocacaoCodigoCliente.setText(Integer.toString(codigoCliente));
    }

    @Override
    public int getCodigoCliente() {
        return 1;//Integer.parseInt(txtLocacaoCodigoCliente.getText());
    }

    @Override
    public void setNomeCliente(String nomeCliente) {
        comboLocacaoNomeCliente.setSelectedItem(nomeCliente);
    }

    @Override
    public String getNomeCliente() {
        return comboLocacaoNomeCliente.getSelectedItem().toString();
    }

    @Override
    public void setListaCliente(List<ClienteModel> listaCliente) {
        comboLocacaoNomeCliente.removeAll();
        for (int i = 0; i < listaCliente.size(); i++) // Percorro o Array List com o For aprimorado.  
        {
            this.comboLocacaoNomeCliente.addItem(listaCliente.get(i).getNome()); // Adiciono os dados.  
        }
    }

    @Override
    public void setDataLocacao(String dataLocacao) {
        txtLocacaoDataLocacao.setText(dataLocacao);
    }

    @Override
    public String getDataLocacao() {
        return txtLocacaoDataLocacao.getText();
    }

    @Override
    public void setDataPrevDevolucao(String dataPrevDevolucao) {
        txtLocacaoDataPrevLocacao.setText(dataPrevDevolucao);
    }

    @Override
    public String getDataPrevDevolucao() {
        return txtLocacaoDataPrevLocacao.getText();
    }

    @Override
    public void setTabelaPreco(String tabelaPreco) {
        comboLocacaoTabelaLocacao.setSelectedItem(tabelaPreco);
    }

    @Override
    public String getTabelaPreco() {
        return comboLocacaoTabelaLocacao.getSelectedItem().toString();
    }

    @Override
    public void setDiasLocacao(int diasLocacao) {
        txtLocacaoDiasLocacao.setText(Integer.toString(diasLocacao));
    }

    @Override
    public int getDiasLocacao() {
        return Integer.parseInt(txtLocacaoDiasLocacao.getText());
    }

    @Override
    public void setCodigoItemLocacao(int codigoItemLocacao) {
        txtLocacaoCodigoProduto.setText(Integer.toString(codigoItemLocacao));
    }

    @Override
    public int getCodigoItemLocacao() {
        return Integer.parseInt(txtLocacaoCodigoProduto.getText());
    }
    
    @Override
    public void setCodigoProduto(int codigoProduto) {
        this.txtLocacaoCodigoProduto.setText(Integer.toString(codigoProduto));
    }

    @Override
    public void setSerieItemLocacao(String serieItemLocacal) {
        txtLocacaoSerieProduto.setText(serieItemLocacal);
    }

    @Override
    public String getSerieItemLocacao() {
        return txtLocacaoSerieProduto.getText();
    }

    @Override
    public void setDescricaoItemLocacao(String descricaoItemLocacao) {
        comboLocacaoDescricaoProduto.setSelectedItem(descricaoItemLocacao);
    }

    @Override
    public String getDescricaoItemLocacao() {
        return comboLocacaoDescricaoProduto.getSelectedItem().toString();
    }

    @Override
    public void setValorProdutoLocacao(double valorItemLocacao) {
        txtLocacaoValorProduto.setText(Double.toString(valorItemLocacao));
    }

    @Override
    public float getValorProdutoLocacao() {
        return Float.parseFloat(txtLocacaoValorProduto.getText());
    }

    @Override
    public void setValorItemLocacao(double valorItemLocacao) {
        txtLocacaoValorItem.setText(Double.toString(valorItemLocacao));
    }

    @Override
    public float getValorItemLocacao() {
        return Float.parseFloat(txtLocacaoValorItem.getText());
    }

    @Override
    public void setValorTotalLocacao(double valorTotalLocacao) {
        txtLocacaoValorTotal.setText(Double.toString(valorTotalLocacao));
    }

    @Override
    public float getValorTotalLocacao() {
        return Float.parseFloat(txtLocacaoValorTotal.getText());
    }

    @Override
    public void setDisponibilidadeItemLocacao(int disponibilidadeItemLocacao) {
        //txtLocacaoD;
    }

    @Override
    public int getDisponibilidadeItemLocacao() {
        return 0;//
    }

    @Override
    public void setListaProduto(List<ProdutoModel> listaProdutos) {
        comboLocacaoDescricaoProduto.removeAll();
        for (int i = 0; i < listaProdutos.size(); i++) // Percorro o Array List com o For aprimorado.  
        {
            this.comboLocacaoDescricaoProduto.addItem(listaProdutos.get(i).getDescricao()); // Adiciono os dados.  
        }
    }

    @Override
    public int getCodigoProduto() {
        return Integer.parseInt(txtLocacaoCodigoProduto.getText());
    }

    @Override
    public void packAndShow() {
        ConfiguracaoInstancias.getDesktop().getDesktop().add(this);
        this.pack();
        this.setVisible(true);
    }

    @Override
    public void clearFields() {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void enableTxtCodigoLocacao(boolean arg) {
        txtLocacaoCodigoLocacao.setEnabled(arg);
    }

    @Override
    public void enableTxtCodigoCliente(boolean arg) {
        //txtLocacaoCodigoCliente.setEnabled(arg);
    }

    @Override
    public void enableComboNomeCliente(boolean arg) {
        comboLocacaoNomeCliente.setEnabled(arg);
    }

    @Override
    public void enableTxtDataLocacao(boolean arg) {
        txtLocacaoDataLocacao.setEnabled(arg);
    }

    @Override
    public void enableTxtDataPrevLocacao(boolean arg) {
        txtLocacaoDataPrevLocacao.setEnabled(arg);
    }

    @Override
    public void enableComboTabelaPreco(boolean arg) {
        comboLocacaoTabelaLocacao.setEnabled(arg);
    }

    @Override
    public void enableTxtDiasLocacao(boolean arg) {
        txtLocacaoDiasLocacao.setEnabled(arg);
    }

    @Override
    public void enableTxtCodigoProduto(boolean arg) {
        txtLocacaoCodigoProduto.setEnabled(arg);
    }

    @Override
    public void enableTxtSerieProduto(boolean arg) {
        txtLocacaoSerieProduto.setEnabled(arg);
    }

    @Override
    public void enableComboDescricaoItem(boolean arg) {
        comboLocacaoDescricaoProduto.setEnabled(arg);
    }

    @Override
    public void enableTxtDisponibilidadeItem(boolean arg) {
        //
    }

    @Override
    public void enableTxtValorItem(boolean arg) {
        txtLocacaoValorProduto.setEnabled(arg);
    }

    @Override
    public void enableBtnCancelarLocacao(boolean arg) {
        btnCancelarLocacao.setEnabled(arg);
    }

    @Override
    public void enableBtnSalvarLocacao(boolean arg) {
        btnSalvarLocacao.setEnabled(arg);
    }

    @Override
    public void enableBtnInserirItem(boolean arg) {
        btnNovoItem.setEnabled(arg);
    }

    @Override
    public void enableBtnNovaLocacao(boolean arg) {
        btnNovoLocacao.setEnabled(arg);
    }

    @Override
    public void enableBtnSalvarItem(boolean arg) {
        btnSalvarItem.setEnabled(arg);
    }

    @Override
    public void enableBtnCancelarItem(boolean arg) {
        btnCancelarItem.setEnabled(arg);
    }

    @Override
    public void enableBtnRemoverItem(boolean arg) {
        btnRemoverItem.setEnabled(arg);
    }

    @Override
    public void removeAllitensComboCliente() {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void removeAllitensComboProduto() {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setItensLocacaoTableModel(ItensLocacaoTableModel itensLocacaoTableModel) {
        this.tabelaLocacaoItensLocacao.setModel(itensLocacaoTableModel);
        
        // Configura as colunas da JTable  
        TableColumnModel columnModel = this.tabelaLocacaoItensLocacao.getColumnModel();

        columnModel.getColumn(0).setHeaderValue("Cód.");
        columnModel.getColumn(0).setPreferredWidth(20);

        columnModel.getColumn(1).setHeaderValue("Série");
        columnModel.getColumn(1).setPreferredWidth(30);

        columnModel.getColumn(2).setHeaderValue("Descrição");
        columnModel.getColumn(2).setPreferredWidth(100);

        columnModel.getColumn(3).setHeaderValue("Vlr Prod.");
        columnModel.getColumn(3).setPreferredWidth(30);

        columnModel.getColumn(4).setHeaderValue("Vlr Item.");
        columnModel.getColumn(4).setPreferredWidth(30);

    }

    @Override
    public ItensLocacaoTableModel getitensLocacaoTableModel() {
        return (ItensLocacaoTableModel) this.tabelaLocacaoItensLocacao.getModel();//throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void refreshTableItensLocacao() {
        this.tabelaLocacaoItensLocacao.updateUI();
    }

    @Override
    public void setInserirItemLocacaoActionListener(ActionListener listener) {
        this.btnNovoItem.addActionListener(listener);
    }

    @Override
    public void setInserirLocacaoActionListener(ActionListener listener) {
        this.btnNovoLocacao.addActionListener(listener);
    }

    @Override
    public void setRemoverItemLocacaoActionListener(ActionListener listener) {
        this.btnRemoverItem.addActionListener(listener);
    }

    @Override
    public void setAlterarActionListener(ActionListener listener) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setCancelarLocacaoActionListener(ActionListener listener) {
        this.btnCancelarLocacao.addActionListener(listener);
    }

    @Override
    public void setCancelarItemLocacaoActionListener(ActionListener listener) {
        this.btnCancelarItem.addActionListener(listener);
    }

    @Override
    public void setSalvarLocacaoActionListener(ActionListener listener) {
        this.btnSalvarLocacao.addActionListener(listener);
    }

    @Override
    public void setSalvarItemLocacaoActionListener(ActionListener listener) {
        this.btnSalvarItem.addActionListener(listener);
    }

    @Override
    public void setBtnSairActionListener(ActionListener listener) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setListaTabelaPreco(List<String> tabelaPreco) {
        for (int i = 0; i < tabelaPreco.size(); i++) // Percorro o Array List com o For aprimorado.  
        {
            this.comboLocacaoTabelaLocacao.addItem(tabelaPreco.get(i)); // Adiciono os dados.  
        }
    }

    @Override
    public void setMascaraListener(KeyListener listener) {
        this.txtLocacaoDataPrevLocacao.addKeyListener(listener);
    }

    @Override
    public void removeAllitensComboNomeCliente() {
        this.comboLocacaoNomeCliente.removeAllItems();
    }

    @Override
    public void removeAllitensComboTabelaPreco() {
        this.comboLocacaoTabelaLocacao.removeAllItems();
    }

    @Override
    public void removeAllitensComboDescricaoProduto() {
        this.comboLocacaoDescricaoProduto.removeAllItems();
    }

    @Override
    public void setComboDescricaoProdutoItemStateChanged(ItemListener itemListener) {
        this.comboLocacaoDescricaoProduto.addItemListener(itemListener);
    }

    @Override
    public void setDiasLocacaoEnterListener(ActionListener listener) {
        this.txtLocacaoDiasLocacao.addActionListener(listener);
    }

    @Override
    public void clearFieldsPainelLocacao() {
        Component[] componentesPainel;
        componentesPainel = painelLocacao.getComponents();
        for (int j = 0; j < componentesPainel.length; j++) {
            if (componentesPainel[j] instanceof JTextField) {
                JTextField field = (JTextField) componentesPainel[j];
                field.setText("");
            }
        }
    }

    @Override
    public void clearFieldsPainelIncluirProdutos() {
        Component[] componentesPainel;
        componentesPainel = painelIncluirProduto.getComponents();
        for (int j = 0; j < componentesPainel.length; j++) {
            if (componentesPainel[j] instanceof JTextField) {
                JTextField field = (JTextField) componentesPainel[j];
                field.setText("");
            }
        }
    }
    
    @Override
    public void setComboClientesFocus() {
        this.comboLocacaoNomeCliente.requestFocus();
    }
    
    @Override
    public void setComboProdutosFocus() {
        this.comboLocacaoDescricaoProduto.requestFocus();
    }

    @Override
    public int linhaSelecionadaTableItens() {
        return this.tabelaLocacaoItensLocacao.getSelectedRow();      
    }

    @Override
    public void setTableItensLocacaoMouseListener(MouseListener listener) {
        this.tabelaLocacaoItensLocacao.addMouseListener(listener);
    }
    
    @Override
    public void clearTableItensLocacao() {
        //tabelaLocacaoItensLocacao.updateUI();
    }
    
}
